﻿#ifndef __GLOBE_H__
#define __GLOBE_H__

#include <QObject>
#include <QString>
#include <QList>

#define SINGLE_FILE_SIZE (60 * 1024 * 1024) //100M


struct PlotSettingConfig
{
	//PlotSettingConfig() {}
	PlotSettingConfig()
		: plots_color(QStringList() << "ff0055ff" << "ffffaa00" << "ff00aa7f" << "ffde21ff" << "ffffffff")
		, color_background("ffc5c5c5")
		, color_grid_line("ffffffff")
		, color_title_font("ff000000")
		, color_axis("ff000000")
		, color_axis_font("ffaa55ff")
		, color_assist_line("ff00aaff")
		, color_assist_background("ff505050")
		, color_mark_background("ff505050")
		, point_size(5)
		, line_width(3)
		, cursor_guide_enable(false)
	{
	}
	QStringList plots_color;
	QString color_background;
	QString color_grid_line;
	QString color_title_font;
	QString color_axis;
	QString color_axis_font;
	QString color_assist_line;
	QString color_assist_background;
	QString color_mark_background;
	int point_size;
	int line_width;
	bool cursor_guide_enable;
};
Q_DECLARE_METATYPE(PlotSettingConfig);

//曲线配置
struct CurveConfig
{
	QString curve_name;//曲线图名称
//	QString x_name;//x轴名称
//	QString y_name;//y轴名称
	QStringList plots;//曲线名称
	int page_number;//曲线图所处页数
	int row_number;//曲线图所处行数
	int column_number;//曲线图所处列数
};
Q_DECLARE_METATYPE(CurveConfig)

//绘图配置
struct DrawConfig
{
	DrawConfig()
		: row(2)
		, column(5)
	{}
	bool IsEmpty()//判空
	{
		return row == 0 || column == 0 || curves.count() == 0;
	}
	void Clear()//清空
	{
		row = 0;
		column = 0;
		curves.clear();
	}
	int row;//行-可视区域的行
	int column;//列
	QList<CurveConfig*> curves;//曲线配置
};
Q_DECLARE_METATYPE(DrawConfig)

//视图配置
struct ViewConfig
{
	QString name;//视图名称
	DrawConfig draw;//绘图配置
};
Q_DECLARE_METATYPE(ViewConfig)

struct AppConfig
{
	AppConfig()
		: udp_port(0)
		, display_form(0)
	{
		custom_curve = new CurveConfig;
		view_range = 5 * 60 * 1000;
	}
	QString udp_ip;//目标IP地址
	int udp_port;//目标端口
	bool display_form;//显示形式 0：视图 1：
	CurveConfig* custom_curve;

	QString x_name;//x轴名称
	int view_range;			//ms

	QList<ViewConfig*> views_config;//绘图配置
};
Q_DECLARE_METATYPE(AppConfig);

//变量信息
struct VariablesInfo
{
	std::string name;   //变量名称
	std::string channel;//变量源通道
	std::string type;   //变量类型 BOOL、INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64、FLOAT、DOUBLE
};
Q_DECLARE_METATYPE(VariablesInfo)

//变量值
struct VariablesValue
{
	std::string name;   //变量名称
	std::string value;  //变量值
};
Q_DECLARE_METATYPE(VariablesValue)


struct DataIn
{
	int x;
	QVector<VariablesValue  > y;
};

#endif
